









class Solution {//V+E V
public:
bool canVisitAllRooms(vector<vector<int>>& room) {
int countRoom = room.size();
int remainingRoom = countRoom - 1 ;
vector<char> canEnter(countRoom, 0);
vector<int> roomToOpen;
canEnter[0] = 1;
roomToOpen.push_back(0);
while (!roomToOpen.empty()) {
int currentRoom = roomToOpen.back();
roomToOpen.pop_back();
for (int nextRoom : room[currentRoom]){
if (!canEnter[nextRoom]) {
canEnter[nextRoom] = 1;
--remainingRoom;
if ( remainingRoom == 0)
return true;
roomToOpen.push_back(nextRoom);
}
}
}
return remainingRoom == 0;
}
};